home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / dev / basic / ACE_ByteRun.lha / src / byterun.s
Encoding:
Text File  |  1999-10-03  |  4.5 KB  |  297 lines

  1. ; History
  2. ; 1.0 - First release, SuperOptimizer FULL output
  3. ; 1.1 - Optimized compare operations (-96 bytes)
  4.  
  5.     xref _AbsExecBase
  6.     xref _LVOPermit
  7.     xdef _SUB_CMP_BR
  8.     xref _LVOForbid
  9.     xdef _SUB_DCMP_BR
  10.     xref _EXIT_PROG
  11.     SECTION code,CODE
  12.     jmp    _lab0
  13. _SUB_WIEVIELGLEICH:
  14.     link    a5,#-12
  15.     move.l    ($4).w,a6
  16.     jsr    _LVOPermit(a6)
  17.     MOVEQ    #0,d3
  18.     move.l    d3,-8(a5)
  19.     move.l    -4(a5),a0
  20.     move.b    (a0),d0
  21.     ext.w    d0
  22.     bge.s    _lab1
  23.     not.w    d0
  24.     move.w    #255,d1
  25.     sub.w    d0,d1
  26.     move.w    d1,d0
  27. _lab1:
  28.     move.w    d0,-10(a5)
  29.     move.w    d0,-12(a5)
  30. _lab2:
  31.     move.w    -12(a5),d0
  32.     cmp.w    -10(a5),d0
  33.     bne.s    _lab6
  34.     move.l    -8(a5),d0
  35.     add.l    #1,d0
  36.     move.l    d0,-8(a5)
  37.     move.l    -4(a5),d0
  38.     add.l    -8(a5),d0
  39.     move.l    d0,a0
  40.     move.b    (a0),d0
  41.     ext.w    d0
  42.     bge.s    _lab5
  43.     not.w    d0
  44.     move.w    #255,d1
  45.     sub.w    d0,d1
  46.     move.w    d1,d0
  47. _lab5:
  48.     move.w    d0,-12(a5)
  49.     jmp    _lab2
  50. _lab6:
  51.     move.l    -8(a5),d0
  52. _EXIT_SUB_WIEVIELGLEICH:
  53.     unlk    a5
  54.     rts      
  55. _lab0:
  56.     jmp    _lab7
  57. _SUB_CMP_BR:
  58.     link    a5,#-46
  59.     move.l    ($4).w,a6
  60.     jsr    _LVOPermit(a6)
  61.     MOVEQ    #0,d3
  62.     move.l    d3,-16(a5)
  63.     move.l    d3,-20(a5)
  64. _lab8:
  65.     move.l    -16(a5),d0
  66.     cmp.l    -12(a5),d0
  67.     bge.s    _lab26
  68.     move.l    -4(a5),d0
  69.     add.l    -16(a5),d0
  70.     move.l    d0,-28(a5)
  71.     move.l    ($4).w,a6
  72.     jsr    _LVOForbid(a6)
  73.     move.l    -28(a5),-12(sp)
  74.     jsr    _SUB_WIEVIELGLEICH
  75.     move.l    d0,-24(a5)
  76.     CmP.l    #2,d0
  77.     ble.s    _lab17
  78.     CmP.l    #129,-24(a5)
  79.     ble.s    _lab15
  80.     move.l    #129,-24(a5)
  81. _lab15:
  82.     move.l    -4(a5),d0
  83.     add.l    -16(a5),d0
  84.     move.l    d0,a0
  85.     move.b    (a0),d0
  86.     ext.w    d0
  87.     bge.s    _lab16
  88.     not.w    d0
  89.     move.w    #255,d1
  90.     sub.w    d0,d1
  91.     move.w    d1,d0
  92. _lab16:
  93.     move.w    d0,-30(a5)
  94.     move.l    #257,d0
  95.     sub.l    -24(a5),d0
  96.     move.w    d0,-32(a5)
  97.     move.l    -8(a5),d0
  98.     add.l    -20(a5),d0
  99.     move.l    d0,a0
  100.     move.w    -32(a5),d0
  101.     move.b    d0,(a0)
  102.     move.l    -8(a5),d0
  103.     add.l    -20(a5),d0
  104.     add.l    #1,d0
  105.     move.l    d0,a0
  106.     move.w    -30(a5),d0
  107.     move.b    d0,(a0)
  108.     move.l    -16(a5),d0
  109.     add.l    -24(a5),d0
  110.     move.l    d0,-16(a5)
  111.     move.l    -20(a5),d0
  112.     add.l    #2,d0
  113.     move.l    d0,-20(a5)
  114.     jmp    _lab25
  115. _lab17:
  116.     MOVEQ    #0,d3
  117.     move.l    d3,-36(a5)
  118.     move.l    d3,-40(a5)
  119. _lab18:
  120.     CmP.l    #3,-40(a5)
  121.     bge.s    _lab21
  122.     move.l    -36(a5),d0
  123.     add.l    #1,d0
  124.     move.l    d0,-36(a5)
  125.     move.l    -4(a5),d0
  126.     add.l    -16(a5),d0
  127.     add.l    -36(a5),d0
  128.     move.l    d0,-44(a5)
  129.     move.l    ($4).w,a6
  130.     jsr    _LVOForbid(a6)
  131.     move.l    -44(a5),-12(sp)
  132.     jsr    _SUB_WIEVIELGLEICH
  133.     move.l    d0,-40(a5)
  134.     jmp    _lab18
  135. _lab21:
  136.     CmP.l    #128,-36(a5)
  137.     ble.s    _lab24
  138.     move.l    #128,-36(a5)
  139. _lab24:
  140.     move.l    -36(a5),d0
  141.     sub.l    #1,d0
  142.     move.w    d0,-46(a5)
  143.     move.l    -8(a5),d0
  144.     add.l    -20(a5),d0
  145.     move.l    d0,a0
  146.     move.w    -46(a5),d0
  147.     move.b    d0,(a0)
  148.     move.l    -4(a5),d0
  149.     add.l    -16(a5),d0
  150.     move.l    d0,a0
  151.     move.l    -8(a5),d0
  152.     add.l    -20(a5),d0
  153.     add.l    #1,d0
  154.     move.l    d0,a1
  155.     move.l    -36(a5),d0
  156.     move.l    ($4).w,a6
  157.     jsr    -624(a6)
  158.     move.l    -16(a5),d0
  159.     add.l    -36(a5),d0
  160.     move.l    d0,-16(a5)
  161.     move.l    -20(a5),d0
  162.     add.l    -36(a5),d0
  163.     add.l    #1,d0
  164.     move.l    d0,-20(a5)
  165. _lab25:
  166.     jmp    _lab8
  167. _lab26:
  168.     move.l    -20(a5),d0
  169. _EXIT_SUB_CMP_BR:
  170.     unlk    a5
  171.     rts      
  172. _lab7:
  173.     jmp    _lab27
  174. _SUB_DCMP_BR:
  175.     link    a5,#-26
  176.     move.l    ($4).w,a6
  177.     jsr    _LVOPermit(a6)
  178.     MOVEQ    #0,d3
  179.     move.l    d3,-16(a5)
  180.     move.l    d3,-20(a5)
  181. _lab28:
  182.     move.l    -20(a5),d0
  183.     cmp.l    -12(a5),d0
  184.     bge.s    _lab42
  185.     move.l    -4(a5),d0
  186.     add.l    -16(a5),d0
  187.     move.l    d0,a0
  188.     move.b    (a0),d0
  189.     ext.w    d0
  190.     bge.s    _lab31
  191.     not.w    d0
  192.     move.w    #255,d1
  193.     sub.w    d0,d1
  194.     move.w    d1,d0
  195. _lab31:
  196.     move.w    d0,-22(a5)
  197.     move.l    -16(a5),d0
  198.     add.l    #1,d0
  199.     move.l    d0,-16(a5)
  200.     CmP.w    #-1,-22(a5)
  201.     ble.s    _lab35
  202.     CmP.w    #128,-22(a5)
  203.     bge.s    _lab35
  204.     move.w    -22(a5),d0
  205.     add.w    #1,d0
  206.     move.w    d0,-22(a5)
  207.     move.l    -4(a5),d0
  208.     add.l    -16(a5),d0
  209.     move.l    d0,a0
  210.     move.l    -8(a5),d0
  211.     add.l    -20(a5),d0
  212.     move.l    d0,a1
  213.     move.w    -22(a5),d0
  214.     EXT.L    d0
  215.     move.l    ($4).w,a6
  216.     jsr    -624(a6)
  217.     move.w    -22(a5),d0
  218.     ext.l    d0
  219.     move.l    d0,d1
  220.     move.l    -20(a5),d0
  221.     add.l    d1,d0
  222.     move.l    d0,-20(a5)
  223.     move.w    -22(a5),d0
  224.     ext.l    d0
  225.     move.l    d0,d1
  226.     move.l    -16(a5),d0
  227.     add.l    d1,d0
  228.     move.l    d0,-16(a5)
  229.     jmp    _lab41
  230. _lab35:
  231.     move.l    -4(a5),d0
  232.     add.l    -16(a5),d0
  233.     move.l    d0,a0
  234.     move.b    (a0),d0
  235.     ext.w    d0
  236.     bge.s    _lab36
  237.     not.w    d0
  238.     move.w    #255,d1
  239.     sub.w    d0,d1
  240.     move.w    d1,d0
  241. _lab36:
  242.     move.w    d0,-24(a5)
  243.     move.l    -16(a5),d0
  244.     add.l    #1,d0
  245.     move.l    d0,-16(a5)
  246.     move.w    #256,d0
  247.     sub.w    -22(a5),d0
  248.     move.w    d0,-22(a5)
  249.     move.w    #0,-26(a5)
  250.     move.w    d0,-(sp)
  251.     move.w    #1,-(sp)
  252. _lab37:
  253.     move.w    -26(a5),d0
  254.     move.w    2(sp),d1
  255.     tst.w    (sp)
  256.     blt    _lab38
  257.     cmp.w    d1,d0
  258.     bgt    _lab40
  259.     jmp    _lab39
  260. _lab38:
  261.     cmp.w    d1,d0
  262.     blt    _lab40
  263. _lab39:
  264.     move.l    -8(a5),d0
  265.     add.l    -20(a5),d0
  266.     move.l    d0,d7
  267.     move.w    -26(a5),d0
  268.     ext.l    d0
  269.     move.l    d0,d1
  270.     move.l    d7,d0
  271.     add.l    d1,d0
  272.     move.l    d0,a0
  273.     move.w    -24(a5),d0
  274.     move.b    d0,(a0)
  275.     move.w    (sp),d0
  276.     add.w    d0,-26(a5)
  277.     jmp    _lab37
  278. _lab40:
  279.     addq    #4,sp
  280.     move.w    -26(a5),d0
  281.     ext.l    d0
  282.     move.l    d0,d1
  283.     move.l    -20(a5),d0
  284.     add.l    d1,d0
  285.     move.l    d0,-20(a5)
  286. _lab41:
  287.     jmp    _lab28
  288. _lab42:
  289. _EXIT_SUB_DCMP_BR:
  290.     unlk    a5
  291.     rts      
  292. _lab27:
  293.     SECTION mem,BSS
  294. _EXECBase    ds.l 1
  295. _dataptr:    ds.l 1
  296.     END
  297.